{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 用柱形图进行对比分析"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1. 初始设置\n",
    "\n",
    "首先，导入所需的库，并设置中文字体等。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导入所需的库\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.image as image\n",
    "\n",
    "# 正常显示中文标签\n",
    "mpl.rcParams['font.sans-serif'] = ['SimHei']\n",
    "\n",
    "# 自动适应布局\n",
    "mpl.rcParams.update({'figure.autolayout': True})\n",
    "\n",
    "# 正常显示负号\n",
    "mpl.rcParams['axes.unicode_minus'] = False\n",
    "\n",
    "# 定义颜色，主色：蓝色，辅助色：灰色，互补色：橙色\n",
    "colors = {'蓝色':'#00589F', '深蓝色':'#003867', '浅蓝色':'#5D9BCF',\n",
    "          '灰色':'#999999', '深灰色':'#666666', '浅灰色':'#CCCCCC',\n",
    "          '橙色':'#F68F00', '深橙色':'#A05D00', '浅橙色':'#FBC171'}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2. 定义数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 定义几个模拟的数据\n",
    "df = pd.DataFrame({'产品':['产品 A', '产品 B', '产品 C', '产品 D'], '销量':[66, 23, 26, 29]})\n",
    "\n",
    "# 画图用的数据定义\n",
    "x = df['产品']\n",
    "y = df['销量']\n",
    "\n",
    "# 平均值\n",
    "avg = y.mean()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3. 开始画图\n",
    "\n",
    "用「**面向对象**」的方法画图。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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IeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfIeAAAADfCUQikeYuAwAAQFpRgwMAAHyHgAMAAHyHgAMAAHwns7kL0FoYY+6SNFbSDdbaNc1dHjQNrnvbxHVvm7ju/kLAqbsuks6U++Wv1y++Mearkh6v4+bjrLUL6lk2NB6ue9vEdW+buO4+QsCJY4y52fs25H3FDzHL9h6vMMa0T9g1S1KupNestcuSHPqQ9zhJ0o4aTj9W0qOSDtez2DhCXPe2ieveNnHd2w4CTlW3S8qQVC6pIsn63XK/oGMTlmfL/eIXSkr2ix891npr7ZZkJzbG9Pa+La9nmZMyxgRV+UfWy1obTsdxfapVX3djzABJGxIWH5K0WNJPrbX/beixfa5VX/e4Y7WT9FNJX5HUXdIKuev+8pEe26da9XVP+HsPS9or6WNJj0l6lP/1lQg4cay1+fHPjTE9JV0s6W/W2kjc8nFyKf1Ba+2eOhy6PpMNpWtiogly/+wkabykeWk6ru/46Lq/J+nv3vfdJX1T0mvGmFOttUvScHxf8cN1N8ZkSnpV0umSrKRVkr4s6UVjzJestc8eyfH9yA/X3fOepIclHSUXbv8h6XxjzGXxr6MtYxRVat+U+6fx+YTlX5X0G0k/ruNxMupxznSFzgtr+B61a63XfZ219hHv625JZ3tluC0Nx24LWuN1/6Zcn5FbrbXfstbeJ+ksSVsk3XWEx24rWuN1l9zf+0PW2p9KOlHSm5KmSboyDcf2BWpwUrtf7s1hsqTZkmSMyZFLy0tV91/8PO9xszGmtm1z61/MpC6UtDDu+7qWFa37usdYawuMMbskHZ/uY/tUa7zu10oqkXRvdIG1tswYM1PSdGPMIGvt+iM8h9+1xutehbW21OtbtFjSN+Saq9o8Ak4CY8w5knrELfqhpD3GmGgqPklSN0nPy3VEk6SA3C/sIWvtv5Icdpak4XUsQkFDyh3PGDNQ7k3td17Z/tcYc6y1NrGfBjx+uO6JjDH5cmVenu5j+0Vrvu7GmA5e+RZYaxM7rc6V1FP1q1VoM1rzda+JtfYjY8xuSacYYwI0UxFwkvmRpImSylJsUyrpKu9Lcr/42XLDCqv94ltr90van95iphRtknpTXsDxlt1b4x7ww3XPi+vE2EfSr7zv/9iEZWhtWvN1P9Yry+YkZXhG0jNNUIbWqjVf91QKJI2RlC+pLv2GfI2AU12OpJXW2hPqs5MxJvrLH30+VtIHNWy+x1rb1RjTS9L2FIdt6FwJF8r10n/Xe14uAk5t/HDdL/O+oiKSvm2tfakBx2orWvN17+g9MuS4/lrzdU8lOlS9vQg4BJwkukvaVd+dvOrA0rhF0e+vlhT/y3uTpAu870u8x1vlqkKjonMlxB+vTowxneQ6HS6T1MFbvFzSRGNMJ+9TBqpr1dfdM0fSPXKfNPtJ+rqke40xstbe38Bj+l1rvu7R4cDV/o97I4P6SvrEWnuwnsdtC1rzdU8l2renOI3HbLUIONUdJWltGo4TnRNhk7V2dXShMaZIlXMgRLfZlrBNtJkh1IDznis3IdVoSdsS1p0j6d8NOGZb0NqvuyR9Zq19Le54j8rNj/EnY8wMa21hA4/rZ635uu/0HnskWfctSXfIvYl+WM/jtgWt+bqncrSkA5L2pfGYrRbDxOMYY4bIJeCP03C4ZBNIRUXqsI1U+QmtPqL9b74p6Tzva3rCOsTxyXWvxlobkpsXJVPSwHQc0098cN0/lZvkbZTXdBLvGO8x6YRzbZkPrntSxpgT5DqWz6eDsUPAqWqy91hTm2p9pPoFC9Zhm3ozxmRIOl9ups0HrbWveZ/oH5T7tHe+tw2qatXXvSbeKJtTvKfVOqKidV93703sCbnmlmhH2OjouQskrbLWJtbiopVf92SMMdmS7vae0hztoYnK430CMnIds+ak4ZCJn6jiZdZhm4b4nKSuctN1x/6orLVhY8yrkr4mN8PxuzXs3+b45LpHDTbGXCM3NLivpMvlqqyftdZ+1kjnbJV8dN1vlzRV0t+MMSPlamy+KTfE+bpGOF+r5qPrLrm/929I6i/pCknDJP3JWvtiI52v1SHgVPqm3PC6u621h2rbuA6iNSVvJpn0aWfCNg8bYx5Ocoz61rBFm6BmJVk3Sy7gXCgCTjw/XPeo07wvSSqStE7Sd+Vq8FCVL667tbbIGDNB0p1yM9jmyzW9nGet/U99j9cG+OK6xKtLjQAAANxJREFUe06T+8BaJNfB+X+ttTMbeCxfIuBIMsZ0lZszZJvc1NzpEP2lTta7flrCNjX1rq/X9bHW3iLplhrWMS9GAh9d941qvE+JvuOX6x5lrd0l16n4Ww3Zv63wy3Xn773uCDiKfQqaJKm7tXZ3mg6b4z0m612fmbBNTb3r0z59Pypx3dsmrnvbxHVvewKRCJ2tG4N3l998Sfu80SzJtgnK9Zk5YK1N51wIaCZc97aJ6942cd1bNgIOAADwHYaJAwAA3yHgAAAA3yHgAAAA3yHgAAAA3yHgAAAA3/n/FKTkCpa/bX0AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 使用「面向对象」的方法画图\n",
    "fig, ax = plt.subplots(figsize=(8, 6))\n",
    "\n",
    "# 设置标题\n",
    "ax.set_title(\"  产品 A 的销量遥遥领先\" % (y[0] / y[1]), fontsize=26, loc='left', color=colors['深灰色'])\n",
    "\n",
    "# 画柱形图\n",
    "ax.bar(x, y, width=0.6, color=colors['蓝色'])\n",
    "\n",
    "# 平均值线\n",
    "lc = ax.hlines(avg, -0.5, len(x)-0.5, color=colors['灰色'], label='平均值', ls='--')\n",
    "# 设置线条宽度\n",
    "lc.set_linewidth(2)\n",
    "# 文字标注平均值\n",
    "ax.text(2, avg+2, \"平均值：%.1f\" % avg, fontsize=20, ha='center', color=colors['灰色'])\n",
    "\n",
    "# 用双箭头强调对比的关系\n",
    "ax.annotate('', xy=(0.5, df.iloc[0, 1]), xytext=(0.5, df.iloc[1, 1]), arrowprops=dict(arrowstyle='<->', color=colors['橙色'], lw=3))\n",
    "# 文字标注两个柱形图的倍数关系\n",
    "ax.text(0.55, y[:2].mean(), \"%.1f倍\" % (y[0] / y[1]), fontsize=20, color=colors['橙色'])\n",
    "\n",
    "# 设置数据标签\n",
    "for a, b in zip(x, y):\n",
    "    ax.text(a, b-6, '%.0f' % b, ha='center', va= 'bottom', fontsize=20, color='w')\n",
    "\n",
    "# 隐藏边框\n",
    "ax.spines['top'].set_visible(False)\n",
    "ax.spines['right'].set_visible(False)\n",
    "ax.spines['bottom'].set_visible(False)\n",
    "ax.spines['left'].set_visible(False)\n",
    "\n",
    "# 隐藏 X 轴的刻度线\n",
    "ax.tick_params(axis='x', which='major', length=0)\n",
    "\n",
    "# 隐藏 Y 轴刻度\n",
    "ax.set_yticks([])\n",
    "\n",
    "# 设置坐标标签字体大小和颜色\n",
    "ax.tick_params(labelsize=20, colors=colors['深灰色'])\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "file_extension": ".py",
  "kernelspec": {
   "display_name": "Python 3.7.0 64-bit",
   "language": "python",
   "name": "python37064bit2965220bd7d04cdebdae4cbe7c63b822"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.0"
  },
  "mimetype": "text/x-python",
  "name": "python",
  "npconvert_exporter": "python",
  "pygments_lexer": "ipython3",
  "version": 3
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
